/* 
 * File:   ParameterInfo.hpp
 * Author: Faisal
 *
 * Created on April 27, 2012, 8:39 PM
 *
 * Description:
 *		Parameter structure that will be used by the Query Modifier to store the parameter information.
 *
 */

#ifndef HParameterInfo_Common

#define HParameterInfo_Common

#include "Shared.hpp"
#include "boost\any.hpp"
#include "FilterType.hpp"

using Supetronix::PersistO::Common::FilterType;
using boost::any;

using std::string;

namespace Supetronix
{
	namespace PersistO
	{
		namespace Common
		{
			struct ParameterInfo
			{
				/*
				*	public properties
				*/
				string ColumnName;
				FilterType ParamFilterType;
				string ParameterName;
				any ParameterValue;

				/*
				* constructor
				*/

				//this constructor will be used for creating the Filter type parameters for the query
				ParameterInfo(const string& colName, const FilterType& filterType, any& paramVal) : 
									ColumnName(colName), ParamFilterType(filterType), ParameterValue(paramVal)
				{
				}

				//this constructor will be used for creating simple query parameters
				ParameterInfo(const string& paramName, any& paramVal) : 
								ParameterName(paramName), ParameterValue(paramVal)
				{
				}

			};
		}
	}
}

#endif